package com.brainshare.system.service;

import java.util.List;

import com.brainshare.an.domain.AnWechatUser;
import com.brainshare.system.domain.RedPacketRecord;
import com.brainshare.system.domain.query.BuriedPointQuery;
import com.brainshare.system.domain.vo.StatisticsTrainCampTransformDetailVO;
import com.brainshare.system.domain.vo.StatisticsWithdrawalMoneyDetailVO;

/**
 * 红包记录Service接口
 * 
 * @author ruoyi
 * @date 2023-08-10
 */
public interface IRedPacketRecordService 
{
    /**
     * 查询红包记录
     * 
     * @param id 红包记录主键
     * @return 红包记录
     */
    public RedPacketRecord selectRedPacketRecordById(Long id);



    /**
     * 获取提取金额总和
     * @param buriedPointQuery
     * @return
     */
    String getWithdrawalMoneySum(BuriedPointQuery buriedPointQuery);

    /**
     * 获取提取金额明细
     * @param buriedPointQuery
     * @return
     */
    List<StatisticsWithdrawalMoneyDetailVO> getWithdrawalMoneyDetailList(BuriedPointQuery buriedPointQuery);

    /**
     * 获取提取金额明细
     * @param withdrawalMoneyDetailList
     * @return
     */
    List<StatisticsWithdrawalMoneyDetailVO> getWithdrawalMoneyDetailList(List<StatisticsWithdrawalMoneyDetailVO> withdrawalMoneyDetailList);

    /**
     * 获取训练营转化总和
     * @param buriedPointQuery
     * @return
     */
    Long getTrainCampTransferSum(BuriedPointQuery buriedPointQuery);

    /**
     * 获取训练营转化明细
     * @param buriedPointQuery
     * @return
     */
    List<StatisticsTrainCampTransformDetailVO> getTrainCampTransferDetailList(BuriedPointQuery buriedPointQuery);

    /**
     * 获取训练营转化明细
     * @param trainCampTransferDetailList
     * @return
     */
    List<StatisticsTrainCampTransformDetailVO> getTrainCampTransferDetailList(List<StatisticsTrainCampTransformDetailVO> trainCampTransferDetailList);

    /**
     * 查询红包记录列表
     * 
     * @param redPacketRecord 红包记录
     * @return 红包记录集合
     */
    public List<RedPacketRecord> selectRedPacketRecordList(RedPacketRecord redPacketRecord);

    /**
     * 查询红包记录
     * @param redPacketRecord
     * @return
     */
    RedPacketRecord getRedPacketRecord(RedPacketRecord redPacketRecord);

    /**
     * 给用户发零钱红包
     * @return
     */
    boolean sendRedPacketToUser(AnWechatUser anWechatUser, String orderId);

    /**
     * 新增红包记录
     * 
     * @param redPacketRecord 红包记录
     * @return 结果
     */
    public int insertRedPacketRecord(RedPacketRecord redPacketRecord);

    /**
     * 修改红包记录
     * 
     * @param redPacketRecord 红包记录
     * @return 结果
     */
    public int updateRedPacketRecord(RedPacketRecord redPacketRecord);

    /**
     * 批量删除红包记录
     * 
     * @param ids 需要删除的红包记录主键集合
     * @return 结果
     */
    public int deleteRedPacketRecordByIds(Long[] ids);

    /**
     * 删除红包记录信息
     * 
     * @param id 红包记录主键
     * @return 结果
     */
    public int deleteRedPacketRecordById(Long id);

    /**
     * 根据用户ID删除红包记录
     * @param userId
     * @return
     */
    int deleteRedPacketRecordByUserId(Long userId);
}
